/*
 * spi.c
 *
 *  Created on: Oct 16, 2013
 *      Author: IEUser
 */


/******************************************************************************************
 *	Deklaracje dołączanych plików nagłówkowych i bibliotek								 *
 *****************************************************************************************/
#include <avr/io.h>

#include "spi.h"

/******************************************************************************************
 *	Deklaracje zmiennych globalnych								                         *
 *****************************************************************************************/

/******************************************************************************************
 *	Deklaracje funkcji															 		 *
 *****************************************************************************************/

/*
 * 	Funkcja inicjujÄ…ca magistralÄ™ SPI
 */
void spi_init(void){
	#ifdef SPI_SLAVE
		SPI_DDR |= (1<<SPI_MISO);
		SPCR |= (1<<SPE);
	#endif
	#ifdef SPI_MASTER
	    SPI_DDR |= (1<<SPI_MOSI) | (1<<SPI_SCK) | (1<<SPI_SS);
	    SPI_DDR &= ~(1<<SPI_MISO);
	    SPCR |= (1<<SPE) | (1<<MSTR) | (1<<SPR0);
	#endif
}/* spi_init */

/*
 * 	Funkcja odczytu bajtu z magistrali SPI
 *	Wynik: odebrany bajt z SPI
 */
uint8_t spi_read_byte(void){
	spi_write_byte(0x00);
	return SPDR;
}/* spi_read_byte */


/*
 * 	Funkcja zapisu bajtu na magistralÄ™ SPI
 *	Argument: bajt do zapisu na SPI
 */
void spi_write_byte(uint8_t byte){
    SPDR = byte;
    while((SPSR & (1<<SPIF))==0);
}/* spi_write_byte */


/******************************************************************************************
 *	Koniec pliku spi.c
 *****************************************************************************************/
